Option Strict On
Option Explicit On

'Copyright (c) 2007-2010, William Severance, Jr., WESNet Designs
'All rights reserved.

'Redistribution and use in source and binary forms, with or without modification, are permitted
'provided that the following conditions are met:

'Redistributions of source code must retain the above copyright notice, this list of conditions
'and the following disclaimer.

'Redistributions in binary form must reproduce the above copyright notice, this list of conditions
'and the following disclaimer in the documentation and/or other materials provided with the distribution.

'Neither the name of William Severance, Jr. or WESNet Designs may be used to endorse or promote
'products derived from this software without specific prior written permission.

'Disclaimer: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
'            OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
'            AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER BE LIABLE
'            FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
'            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
'            INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
'            OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
'            IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

'Although I will try to answer questions regarding the installation and use of this software when
'such questions are submitted via e-mail to the below address, no promise of further
'support or enhancement is made nor should be assumed.

'Developer Contact Information:
'     William Severance, Jr.
'     WESNet Designs
'     679 Upper Ridge Road
'     Bridgton, ME 04009
'     Phone: 207-647-9375
'     E-Mail: bill@wesnetdesigns.com
'     Website: www.wesnetdesigns.com

Imports System
Imports System.Configuration
Imports System.Data
Imports System.Xml.Serialization

Namespace WESNet.DNN.Modules.EPrayer
    <Serializable(), XmlRoot("SubjectContact")> _
    Public Class SubjectContactInfo

#Region "Private Members"
        Private _Name As String
        Private _Address As String
        Private _City As String
        Private _State As String
        Private _ZipPlus4 As String
        Private _EMail As String
#End Region

#Region "Public Properties"

        Public Property Name() As String
            Get
                Return _Name
            End Get
            Set(ByVal value As String)
                _Name = value
            End Set
        End Property

        Public Property Address() As String
            Get
                Return _Address
            End Get
            Set(ByVal value As String)
                _Address = value
            End Set
        End Property

        Public Property City() As String
            Get
                Return _City
            End Get
            Set(ByVal value As String)
                _City = value
            End Set
        End Property

        Public Property State() As String
            Get
                Return _State
            End Get
            Set(ByVal value As String)
                _State = value
            End Set
        End Property

        Public Property ZipPlus4() As String
            Get
                Return _ZipPlus4
            End Get
            Set(ByVal value As String)
                _ZipPlus4 = value
            End Set
        End Property

        Public Property EMail() As String
            Get
                Return _EMail
            End Get
            Set(ByVal value As String)
                _EMail = value
            End Set
        End Property

        <XmlIgnore()> _
        Public ReadOnly Property IsNull() As Boolean
            Get
                Return String.IsNullOrEmpty(Name) And Not HasEmail And Not HasAddress
            End Get
        End Property

        <XmlIgnore()> _
        Public ReadOnly Property CanContact() As Boolean
            Get
                Return HasAddress Or HasEmail
            End Get
        End Property

        <XmlIgnore()> _
        Public ReadOnly Property HasEmail() As Boolean
            Get
                Return Not String.IsNullOrEmpty(EMail)
            End Get
        End Property

        <XmlIgnore()> _
        Public ReadOnly Property HasAddress() As Boolean
            Get
                Return (Not String.IsNullOrEmpty(Address) _
                         And Not String.IsNullOrEmpty(State) And Not String.IsNullOrEmpty(City) And Not String.IsNullOrEmpty(ZipPlus4))
            End Get
        End Property

#End Region

#Region "Constructors"
        Public Sub New()

        End Sub

        Public Sub New(ByVal Name As String, ByVal Address As String, ByVal City As String, ByVal State As String, ByVal ZipPlus4 As String, ByVal EMail As String)
            _Name = Name
            _Address = Address
            _City = City
            _State = State
            _ZipPlus4 = ZipPlus4
            _EMail = EMail
        End Sub

        Public Sub New(ByVal dr As System.Data.IDataReader)
            _Name = Null.SetNullString(dr.Item("SubjectName"))
            _Address = Null.SetNullString(dr.Item("SubjectAddress"))
            _City = Null.SetNullString(dr.Item("SubjectCity"))
            _State = Null.SetNullString(dr.Item("SubjectState"))
            _ZipPlus4 = Null.SetNullString(dr.Item("SubjectZipPlus4"))
            _EMail = Null.SetNullString(dr.Item("SubjectEMail"))
        End Sub
#End Region

    End Class
End Namespace
